package com.daJiao.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.daJiao.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * <p>Title:      SysPatient. </p>
 * <p>Description 患者信息表 </p>
 * <p>Copyright: Copyright (c) 2016</p>
 * <p>Company:    医百科技有限公司 </p>
 *
 * @author         yangwensheng@100doc.com.cn
 * @since      2021-03-25 10:08:31
 */
@Builder
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "SysPatient")
@TableName("sys_patient")
public class SysPatient extends BaseEntity implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * 业务编码
	 */
	private String code;

	/**
	 * 真实姓名
	 */
	@ApiModelProperty(value = "真实姓名")
	@NotEmpty(message = "姓名不能为空")
	private String realName;

	/**
	 * 性别 1:男 2:女
	 */
	@ApiModelProperty(value = "性别 1:男 2:女")
	private Integer sex;

	/**
	 * 入组编号
	 */
	@ApiModelProperty(value = "入组编号(电子ICF编号)")
	private String icfCode;

	/**
	 * 年龄
	 */
	@ApiModelProperty(value = "年龄")
	private Integer age;
	/**
	 * 身高
	 */
	@ApiModelProperty(value = "身高")
	private BigDecimal height;
	/**
	 * 体重
	 */
	@ApiModelProperty(value = "体重")
	private BigDecimal weight;
	/**
	 * 出生日期
	 */
	@ApiModelProperty(value = "出生日期")
	@DateTimeFormat(pattern="yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private LocalDateTime birthday;
	/**
	 * 证件类型 1：身份证 2：护照
	 */
	@ApiModelProperty(value = "证件类型 1：身份证 2：护照")
	private Integer certificatesType;

	/**
	 * 患者类型 0：成人 1：青少年 2：其他（12岁以下）-1：未知
	 */
	@ApiModelProperty(value = "患者类型 0：成人 1：青少年 2：其他（12岁以下）-1：未知")
	private Integer patientType;
	/**
	 * 身份证号
	 */
	@ApiModelProperty(value = "身份证号")
	private String idNum;
	/**
	 * 联系方式
	 */
	@ApiModelProperty(value = "联系方式")
	@NotEmpty(message = "手机号不能为空")
	private String phone;
	/**
	 * 备用联系方式
	 */
	@ApiModelProperty(value = "备用联系方式")
	private String phoneBack;
	/**
	 * 邮箱
	 */
	@ApiModelProperty(value = "邮箱")
	private String email;
	/**
	 * openId
	 */
	@ApiModelProperty(value = "openId")
	private String openId;
	/**
	 * 当前入组医院Id
	 */
	@ApiModelProperty(value = "当前入组医院Id")
	private Long hospitalId;


	/**
	 * 认证状态 0: 未认证 1：已认证 
	 */
	@ApiModelProperty(value = "认证状态 0: 未认证 1：已认证 ")
	private Integer status;

	/**
	 * 审核状态 0：未审核(未入组) 1：已审核(已入组) 2：已脱组
	 */
	@ApiModelProperty(value = "审核状态 0：未审核(未入组) 1：已审核(已入组) 2：已脱组")
	private Integer auditStatus;


	/**
	 * 协议签署状态 0：未签署 1：已签署 
	 */
	@ApiModelProperty(value = "协议签署状态 0：未签署 1：已签署 ")
	private Integer agreement;

	/**
	 * 入组时间
	 */
	@ApiModelProperty(value = "入组时间")
	@DateTimeFormat(pattern="yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private LocalDateTime joinTime;


	/**
	 * 脱组时间
	 */
	@ApiModelProperty(value = "脱组时间")
	@DateTimeFormat(pattern="yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private LocalDateTime exitTime;

	/**
	 * 所属医生
	 */
	@ApiModelProperty(value = "所属医生")
	private Long doctorId;

	/**
	 * 所属医生
	 */
	@ApiModelProperty(value = "所属专员")
	private Long commissioner;


}
